home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / books.arc / UPDATE.PRG < prev   
Text File  |  1985-04-17  |  3KB  |  110 lines

  1. * update.prg
  2. * Update the Chart of Accounts (COA)
  3. * file from transactions (TRANS).
  4. erase
  5. ? 'This program should be performed to bring the '
  6. ? 'Chart of Accounts balances up-to-date'
  7. ?
  8. store ' ' to yn
  9. @ 5,2 say "Is this the program you want ? " get yn
  10. read
  11. * return to main menu if requested
  12. if !(yn) <> 'Y'
  13.    retu
  14. endif
  15.  
  16. * Get date of last update from geninfo
  17. use geninfo
  18. stor last:updat to last:date
  19.  
  20. * Ask about how to perform update, and
  21. * double check for safety.
  22. store f to ok
  23. do while .not. ok
  24.    erase
  25.    store ' ' to new:qtr,new:month,new:year
  26.    @ 5,2 say "Chart of accounts was last updated "
  27.    @ 5,36 say "on "+last:date
  28.    @ 8,2 say "Is this the start of a new month ? "
  29.    @ 8,40 get new:month pict "!"
  30.    read
  31.    if new:month = "Y"
  32.       @ 10,2 say "Is this the start of a new quarter? "
  33.       @ 10,38 get new:qtr pict "!"
  34.       @ 12,2 say "Is this the start of a new year? "
  35.       @ 12,38 get new:year pict "!"
  36.       read
  37.    endi
  38.    @ 14,20 say "Ok? (Y/N) " get ok pict "!"
  39.    read
  40. endd ( while not ok)
  41.  
  42. * copy all non-posted records from
  43. * the trans file to a temp file,
  44. * then flag all records as posted.
  45. erase
  46. ? "Performing the update...."
  47. use trans index acct
  48. copy to temp for .not. posted
  49. repl all posted with t noupdate
  50.  
  51. * Set month to date field (amount)
  52. * to 0 if starting new month
  53. use coa index coa
  54. if new:month = "Y"
  55.    repl all amount with 0
  56. endif (new:month = y)
  57.       
  58. * If start of new quarter, replace all
  59. * quarterly balances with 0 too.
  60. If new:qtr = "Y"
  61.    repl all qtd with 0 noupdate
  62. endif (new :qtr = Y)
  63.  
  64. * If start of new year, replace all
  65. * yearly balances with 0 too.
  66. If new:year = "Y"
  67.    repl all ytd with 0 noupdate
  68. endif (new:year = "Y")
  69.  
  70. * set up data files for update
  71. sele prim
  72. use coa index coa
  73. sele seco
  74. use temp
  75.  
  76. * do update
  77. do while .not. eof
  78.    stor str(acct,6,2) to lookup
  79.    sele prim
  80.    find &lookup
  81.    repl p.amount with p.amount + s.amount
  82.    repl qtd with qtd + s.amount
  83.    repl ytd with ytd + s.amount
  84.    sele seco
  85.    skip
  86. enddo (while not end of seco file)
  87.  
  88. * when done with update, close the
  89. * data files.
  90. sele seco
  91. use
  92. sele prim
  93. use
  94.  
  95. * update geninfo
  96. * with new date of last update.
  97. use geninfo
  98. repl last:updat with t:date
  99. use
  100.  
  101. rele last:date,new:month,new:qtr,new:year
  102. rele lookup,yn,ok
  103. return
  104. uarter? "
  105.       @ 10,38 get new:qtr pict "!"
  106.       @ 12,2 say "Is this the start of a new year? "
  107.       @ 12,38 get new:year pict "!"
  108.       read
  109.    endi
  110.    @ 14,20 say "Ok? (Y/N) " get ok pict